package com.ruoyi.ftrl.mqtt.controller;

import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.ftrl.mqtt.domain.MqttMessage;
import com.ruoyi.ftrl.mqtt.service.MqttPublisherService;
import com.ruoyi.ftrl.mqtt.service.MqttService;
import com.ruoyi.ftrl.mqtt.service.impl.MqttServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * MQTT消息管理控制器
 */
@RestController
@RequestMapping("/ftrl/mqtt")
public class MqttController extends BaseController {

    @Autowired
    private MqttService mqttService;
    @Autowired
    private MqttServiceImpl mqttService1;


    private final MqttPublisherService mqttPublisherService;

    @Autowired
    public MqttController(MqttPublisherService mqttPublisherService) {
        this.mqttPublisherService = mqttPublisherService;
    }

    @Anonymous
    @PostMapping("/send")
    public String sendMessage(String message) {
        mqttPublisherService.publishMessage(message);
        return "消息已发送: " + message;
    }


//    @PostMapping("/send-command/{deviceCode}")
//    public AjaxResult sendCommandToDevice(@PathVariable String deviceCode, @RequestBody String command) {
//        String topic = "ruoyi/device/" + deviceCode + "/command";
//        mqttService1.publishMessage(topic, command);
//        return AjaxResult.success("命令已发送到设备");
//    }
//
//    /**
//     * 发送MQTT消息
//     */
//    @PostMapping("/publish")
//    public AjaxResult publishMessage(@RequestBody MqttMessage mqttMessage) {
//        try {
//            boolean result = mqttService.publish(
//                    mqttMessage.getTopic(),
//                    mqttMessage.getPayload(),
//                    mqttMessage.getQos()
//            );
//
//            if (result) {
//                return AjaxResult.success("消息发送成功");
//            } else {
//                return AjaxResult.error("消息发送失败，客户端未连接");
//            }
//        } catch (Exception e) {
//            return AjaxResult.error("消息发送失败：" + e.getMessage());
//        }
//    }
//
//    /**
//     * 订阅MQTT主题
//     */
//    @PostMapping("/subscribe")
//    public AjaxResult subscribeTopic(@RequestBody MqttMessage mqttMessage) {
//        try {
//            boolean result = mqttService.subscribe(mqttMessage.getTopic(), mqttMessage.getQos());
//
//            if (result) {
//                return AjaxResult.success("主题订阅成功");
//            } else {
//                return AjaxResult.error("主题订阅失败，客户端未连接");
//            }
//        } catch (Exception e) {
//            return AjaxResult.error("主题订阅失败：" + e.getMessage());
//        }
//    }
//
//    /**
//     * 获取MQTT连接状态
//     */
//    @GetMapping("/status")
//    public AjaxResult getConnectionStatus() {
//        boolean connected = mqttService.isConnected();
//
//        if (connected) {
//            return AjaxResult.success("MQTT客户端已连接");
//        } else {
//            return AjaxResult.error("MQTT客户端未连接");
//        }
//    }
//
//    /**
//     * 重新连接MQTT服务器
//     */
//    @PostMapping("/reconnect")
//    public AjaxResult reconnect() {
//        try {
//            mqttService.disconnect();
//            boolean result = mqttService.connect();
//
//            if (result) {
//                return AjaxResult.success("MQTT重新连接成功");
//            } else {
//                return AjaxResult.error("MQTT重新连接失败");
//            }
//        } catch (Exception e) {
//            return AjaxResult.error("MQTT重新连接失败：" + e.getMessage());
//        }
//    }
}